package com.iprojectmanager.businessclass;

import java.io.*;
import javax.servlet.*;
import com.iprojectmanager.managers.*;
import com.iprojectmanager.entities.*;
import java.util.*;
import javax.servlet.http.*;

/**
 *
 * @author JKA
 */
public class LiderControl extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
    {
        String opcion = null;
        //Operaciones con integrantes de un proyecto.
        String operation = request.getParameter("operacionesintegrante");
        String usuario = (String)request.getAttribute("usuario");
        if ((opcion = request.getParameter("operacionesintegrante")) != null)
        {
            //Si de desea agregar integrantes a un proyecto.
            if (opcion.compareTo("Agregar Integrantes") == 0) {
                request.getRequestDispatcher("VistaAgregarIntegrante").forward(request, response);
            }
            //Si de desea quitar integrantes de un proyecto.
            else if (opcion.compareTo("Quitar Integrantes") == 0) {
                quitarIntegrantes(request, response);
                request.getRequestDispatcher("VistaLider").forward(request, response);
            }
            //Anexar opciones faltantes para operaciones de integrantes.
            else if (opcion.compareTo("Modificar Datos") == 0) {
                //quitarIntegrantes(request, response);
                request.getRequestDispatcher("VistaOperacionUsuario").forward(request, response);
            }else if (opcion.compareTo("Asignar Roles") == 0) {
                //quitarIntegrantes(request, response);
                request.getRequestDispatcher("VistaOperacionUsuario").forward(request, response);
            }
            else if(operation.compareToIgnoreCase("Evaluar Material")==0)
            {
                System.out.println("usuarioD:"+usuario);
                request.setAttribute("usuario", usuario); 
                request.getRequestDispatcher("VistaEvaluarMaterial").forward(request, response);
            }

            

        }//Operaciones con las actividades de un proyecto.
        else if ((opcion = request.getParameter("operacioneactividades")) != null)
        {
            //Anexar comparaciones relacionadas con operaciones con actividades y sus respectivos métodos.


        } //Operaciones con las actividades de un proyecto.
        
        //Esto ocurre si se desea agragar integrantes a un proyecto.ecto
        else if (request.getParameter("Aceptar") != null && request.getParameter("Aceptar").compareTo("agregar") == 0) {
            agregarIntegrantes(request, response);
            request.getRequestDispatcher("VistaLider").forward(request, response);
        }
    } //Fin de doGet.

    //Agregar integrantes.
    public void agregarIntegrantes(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        UserManager um = new UserManager();
        HttpSession session = request.getSession();
        //Obtenemos lider y su proyecto.
        LiderProyecto lider = (LiderProyecto)session.getAttribute("user");
        Proyecto proyecto = lider.getProyecto();
        //Obtenemos parametros del request.
        String[] usuarios =  request.getParameterValues("usuario");
        ArrayList<IntegranteProyecto> todos = um.getIntegrantes();

        if (usuarios != null && proyecto != null) {
            for (String idusuario : usuarios) {
                for (IntegranteProyecto integrante : todos) {
                    if (Long.parseLong(idusuario) == integrante.getId()) {
                        integrante.setProyecto(proyecto);
                        um.exec(integrante, UserManager.UPDATE);
                        break;
                    }
                }
            }
        }
    }

    //Quitar integrantes.
    public void quitarIntegrantes(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
    {
        UserManager um = new UserManager();
        //Obtenemos parametros del request.
        String[] usuarios =  request.getParameterValues("usuario");
        ArrayList<IntegranteProyecto> todos = um.getIntegrantes();
        ActivitiesManager manager = new ActivitiesManager();

        if (usuarios != null) 
        {
            for (String idusuario : usuarios) 
            {
                for (IntegranteProyecto integrante : todos)
                {
                    if (Long.parseLong(idusuario) == integrante.getId()) 
                    {
                        for(Actividad actividad : integrante.getActividades())
                        {
                            actividad.setResponsable(null);
                            manager.exec(actividad, IProjectManager.UPDATE);
                        }
                        integrante.setProyecto(null);
                        um.exec(integrante, UserManager.UPDATE);
                        break;
                    }
                }
            }
        }
    }

    @Override
    public String getServletInfo() {
        return "Control de operaciones para el Lider de Proyecto";
    }
}
